@导入Java("android.os.Build")
@导入Java("android.util.Log")
@导入Java("java.io.*")
@附加权限(安卓权限.文件权限_读取)
@附加权限(安卓权限.文件权限_写入)
@附加权限(安卓权限.网络权限)
@导入Java("java.net.NetworkInterface")
@导入Java("java.util.Collections")
@导入Java("java.util.Enumeration")
@导入Java("java.util.List")
@导入Java("java.net.InterfaceAddress")
@导入Java("java.net.SocketException")
@导入Java("java.io.File")
@导入Java("java.io.FileNotFoundException")
@导入Java("java.util.Scanner")
@导入Java("java.io.FileReader")
@导入Java("java.nio.file.Files")
@导入Java("java.nio.file.Paths")
类 安全
	方法 检测root(安卓环境:安卓环境):逻辑型
		变量 结果 : 逻辑型
		如果 文件是否存在("/system/bin/su")或 文件是否存在("/system/xbin/su")
			结果=真
		结束 如果
		返回 结果
	结束 方法
	方法 检测bl锁是否锁定():逻辑型
		@code
		try {Process process = Runtime.getRuntime().exec("getprop ro.boot.flash.locked");BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(process.getInputStream()));String line;while ((line = bufferedReader.readLine()) != null) {if ("1".equals(line.trim())) {Log.d("TAG", "Bootloader is locked.");return true;} else if ("0".equals(line.trim())) {Log.d("TAG", "Bootloader is unlocked.");return false;}}return true;} catch (Exception e) {Log.e("TAG", "Error checking bootloader status: ", e);return true;}
		@end
	结束 方法
	方法  Xp框架检测():逻辑型
		//lsposed无法检测
		@code
		String xposedProp = System.getProperty("ro.xposed.installed");return "1".equals(xposedProp);
		@end
	结束 方法
	方法 VPN是否已打开() : 逻辑型
		@code
        boolean isVpn = false;
         try {
         Enumeration<NetworkInterface> networkInterfaces = NetworkInterface.getNetworkInterfaces();
          if (networkInterfaces != null) {
           List<NetworkInterface> interfaceList = Collections.list(networkInterfaces);
          for (NetworkInterface ni : interfaceList) {
            if (ni.isUp()) {
                List<InterfaceAddress> interfaceAddresses = ni.getInterfaceAddresses();
                if (interfaceAddresses.size() > 0) {
                    String name = ni.getName();
                    if (name.equals("tun0") || name.equals("ppp0")) {
                        isVpn = true;
                        break;
                    }
                }
            }
            }
         }
         } catch (SocketException e) {
          e.printStackTrace();
         }
          return isVpn;
		@end
	结束 方法
	方法 是否虚拟环境() : 逻辑型
		@code
    int count = 0;
    boolean isXPOS = false;
    
    File[] zones = new File("/sys/class/thermal/").listFiles();
    
    if (zones != null) { // 添加空指针检查
        for (File zone : zones) {
            String path = zone.getAbsolutePath();
            if (zone.getName().contains("thermal_zone")) {
                String tempFile = path + "/temp";
                boolean isValid = new File(tempFile).exists();
                
                if (isValid) {
                    String type = "cpu"; // 模拟读取类型信息
                    
                    if (type.contains("cpu")) {
                        String tempStr = "60000"; // 模拟读取温度信息
                        tempStr = tempStr.trim();
                        Long temp = Long.valueOf(tempStr);
                        
                        if (temp == null || temp <= 0) {
                            tempStr = "unknown";
                        } else {
                            tempStr = String.valueOf(temp / 1000);
                        }
                        count++;
                    } else if (type.contains("tsens_tz_sensor")) {
                        String tempStr = "950"; // 模拟读取温度信息
                        tempStr = tempStr.trim();
                        Long temp = Long.valueOf(tempStr);
                        
                        if (temp == null || temp <= 0) {
                            tempStr = "unknown";
                        } else if (temp > 100) {
                            tempStr = String.valueOf(temp / 10);
                        }
                        count++;
                    }
                }
            }
        }
        
        if (count > 0) {
            isXPOS = true;
        } 
    }
    return isXPOS;
    @end
	结束 方法
结束 类